#! /usr/bin/env python
# coding=utf-8
# 生成一堆板 基因条码 各个样品 ID 和引物的组合
# 这里假定每个板 使用一组全部的正向引物 和一个相同的反向引物

# 需要输入 文件A 第一列：板的ID  第二列：反向引物的ID
# 板使用的正向引物 的编号必须和孔一一对应 _1A 这样的反应孔号的
# 文件B 引物列表文件




from Bio import SeqIO
import os
import shutil
import argparse
import sys
import re

# 使用方法 
# conver04_add_gap2simulation.py  -r rawfile -s simulationfile 

parser = argparse.ArgumentParser(
    description=''' 生成一堆板 基因条码 各个样品 ID 和引物的组合。
    这里假定每个板 使用一组全部的正向引物 和一个相同的反向引物,
    需要输入 文件A 第一列：板的ID  第二列：反向引物的ID
    板使用的正向引物 的编号必须和孔一一对应 _1A 这样的反应孔号的
    文件B 引物列表文件

    barcode_get_all_comb.py -a raw_minion_primer.csv -b plat_info -o out_table

    由大天才于2022年3月9日创建于浙江农业大学''')




parser.add_argument('-a',
                help='引物的顺序文件')

parser.add_argument('-b',
                help='板的反向引物对应表')

parser.add_argument('-o',
                help='输出文件')

args = parser.parse_args()


if not args.a or not args.o or not args.b:
    parser.print_help()
    sys.exit()




infile = args.b
primer_file = args.a
outfile = args.o



# 读取正向引物列表
forward_lista=  {}
with open(primer_file) as fila:
	for i in fila:
		k = i.strip().replace(',','\t').split('\t')
		if len(k)>1 and k[0]!='':
			sample_id = k[1].split('_')[-1]
			forward_lista[sample_id] = k[1]


outfile = open(outfile,'w')

with open(infile) as fila:
	for i in fila:
		k = i.strip().split('\t')
		if len(k)>1:
			plat_id = k[0]
			for j in forward_lista:
				outfile.write(plat_id+'_'+j+'\t'+forward_lista[j]+'\t'+k[1]+'\n')

outfile.close()

